import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.feature_selection import VarianceThreshold
from sklearn.feature_selection import f_classif

# 导入合并之后的表格
data_old = pd.read_csv(r"C:\Users\Lenovo\Desktop\机器学习数据\JUTTA DATA\x1_missing_reg.csv")
TOIMTUKI_DATA = pd.read_csv(r"C:\Users\Lenovo\Desktop\机器学习数据\JUTTA DATA\合并数据.csv",usecols=["TOIMTUKI_DATA"])

# 获取列名（获得所有的特征名称）
columns_name = data_old.columns.values

"预处理，采用StandardScaler"

# 数据标准化
scaler = StandardScaler()                                                                  #实例化
data_old = scaler.fit_transform(data_old)              #使用fit_transform(data)一步达成结果
print(data_old)

"特征选择"

# 删除方差为0的数据
selector = VarianceThreshold()                                                      #实例化
data_old = selector.fit_transform(data_old)     #删除不合格特征

# (处理完之后列名消失了)
# 保留特征名称
select_name_index0 = selector.get_support(indices=True)  # 留下特征的索引值，list格式
select_name0 = []
for i in select_name_index0:
    select_name0.append(columns_name[i])
# print(select_name0)

# 恢复列名（特征名称）
TOIMTUKI_DATA_equals_1_scaler = pd.DataFrame(data=data_old, columns=select_name0)       #指定行名（index）和列名（columns）

# 导出数据
TOIMTUKI_DATA_equals_1_scaler = pd.DataFrame(TOIMTUKI_DATA_equals_1_scaler)
TOIMTUKI_DATA_equals_1_scaler.to_csv(r"C:\Users\Lenovo\Desktop\机器学习数据\JUTTA DATA\预处理与特征工程之后的数据且筛选过的数据.csv")